package modelo;

public class MacX extends Motor {
	
	public static final double VELOCIDAD_MAXIMA_1 = Convertir.KMh_a_Ms(80);
	public static final double TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_1 = 2;
	
	public static final double VELOCIDAD_MAXIMA_2 = Convertir.KMh_a_Ms(150) ;
	public static final double TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_2 = 15;
	
	public static final double ACELERACION_ENTRE_0_Y_1 = VELOCIDAD_MAXIMA_1 
		/ TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_1;
	public static final double ACELERACION_ENTRE_1_Y_2 = (VELOCIDAD_MAXIMA_2 
			- VELOCIDAD_MAXIMA_1) / TIEMPO_PARA_ALCANZAR_LA_VELOCIDAD_MAXIMA_2;
	
	public MacX(){
		this.velocidadMaxima = VELOCIDAD_MAXIMA_2;
	}
		
	public double obtenerAceleracionMax(){
		/* de 0 a 80 km/h */ 
		if (velocidad < VELOCIDAD_MAXIMA_1)
			return ACELERACION_ENTRE_0_Y_1;
			
		/* de 80 a 150 km/h */
		return ACELERACION_ENTRE_1_Y_2;
	}
	
	/* este metodo es redefinido para cambiar la forma en la que esta 
	 * clase valida su aceleracion */
	public void validarAceleracion(){
		if ((aceleracion > 0) && (aceleracion != ACELERACION_ENTRE_1_Y_2))
			if (velocidad >= VELOCIDAD_MAXIMA_1)
				aceleracion = ACELERACION_ENTRE_1_Y_2;
		else if (aceleracion == ACELERACION_ENTRE_1_Y_2)
			if (velocidad == VELOCIDAD_MAXIMA_2)
				aceleracion = 0;
	}
}
